let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
- .file("src/foo.rs", r#"
+ .file("src/main.rs", r#"
#![feature(test)]
extern crate test;
[COMPILING] foo v0.5.0 ({})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", p.url()))
- .with_stdout("
-running 1 test
-test bench_hello ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test bench_hello ... bench: [..]"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]mybench-[..][EXE]
", dir = prj.url()))
- .with_stdout("
-running 1 test
-test run2 ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test run2 ... bench: [..]"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
", dir = prj.url()))
- .with_stdout("
-running 1 test
-test run1 ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test run1 ... bench: [..]"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]bin2-[..][EXE]
", dir = prj.url()))
- .with_stdout("
-running 1 test
-test run2 ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test run2 ... bench: [..]"));
}
#[test]
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
- .file("src/foo.rs", r#"
+ .file("src/main.rs", r#"
#![feature(test)]
extern crate test;
fn main() {}
assert_that(p.cargo_process("bench").arg("-v").arg("hello"),
execs().with_stderr(&format!("\
[COMPILING] foo v0.5.0 ({url})
-[RUNNING] `rustc [..] src[/]foo.rs [..]`
+[RUNNING] `rustc [..] src[/]main.rs [..]`
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] hello --bench`", url = p.url()))
- .with_stdout("
-running 1 test
-test bench_hello ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test bench_hello ... bench: [..]"));
}
#[test]
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
- .file("src/foo.rs", r#"
+ .file("src/main.rs", r#"
#![feature(test)]
extern crate test;
fn hello() -> &'static str {
execs().with_stdout("hello\n"));
assert_that(p.cargo("bench"),
- execs().with_stdout_contains("
-running 1 test
-test bench_hello ... ")
+ execs().with_stdout_contains("test bench_hello ... ")
.with_stderr_contains(format!("\
[COMPILING] foo v0.5.0 ({})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
thread '[..]' panicked at 'assertion failed: \
- `(left == right)` (left: \
- `\"hello\"`, right: `\"nope\"`)', src[/]foo.rs:14
-[..]
-", p.url()))
+ `(left == right)`[..]", p.url()))
+ .with_stderr_contains("[..]left: `\"hello\"`[..]")
+ .with_stderr_contains("[..]right: `\"nope\"`[..]")
+ .with_stderr_contains("[..]src[/]main.rs:14[..]")
.with_status(101));
}
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
[RUNNING] target[/]release[/]deps[/]baz-[..][EXE]", p.url()))
- .with_stdout("
-running 1 test
-test lib_bench ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-
-running 1 test
-test bin_bench ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"))
+ .with_stdout_contains("test lib_bench ... bench: [..]")
+ .with_stdout_contains("test bin_bench ... bench: [..]"));
}
#[test]
[COMPILING] bar v0.0.1 ({dir})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]bar-[..][EXE]", dir = p.url()))
- .with_stdout("
-running 1 test
-test bar_bench ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test bar_bench ... bench: [..]"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
[RUNNING] target[/]release[/]deps[/]bench-[..][EXE]", p.url()))
- .with_stdout("
-running 1 test
-test internal_bench ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-
-running 1 test
-test external_bench ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"))
+ .with_stdout_contains("test internal_bench ... bench: [..]")
+ .with_stdout_contains("test external_bench ... bench: [..]"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
[RUNNING] target[/]release[/]deps[/]external-[..][EXE]", p.url()))
- .with_stdout("
-running 1 test
-test internal_bench ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-
-running 1 test
-test external_bench ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"))
+ .with_stdout_contains("test internal_bench ... bench: [..]")
+ .with_stdout_contains("test external_bench ... bench: [..]"));
}
#[test]
[COMPILING] foo v0.0.1 ({dir})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", dir = p.url()))
- .with_stdout("
-running 1 test
-test bar ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test bar ... bench: [..]"));
assert_that(p.cargo("bench").arg("foo"),
execs().with_status(0)
.with_stderr("[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
- .with_stdout("
-running 1 test
-test foo ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test foo ... bench: [..]"));
}
// Regression test for running cargo-bench twice with
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", p.url()))
- .with_stdout("
-running 1 test
-test [..] ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-
-running 1 test
-test [..] ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"))
+ .with_stdout_contains_n("test [..] ... bench: [..]", 2));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]syntax-[..][EXE]
[RUNNING] target[/]release[/]deps[/]bench-[..][EXE]", dir = p.url()))
- .with_stdout("
-running 1 test
-test foo_bench ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-
-running 1 test
-test bench ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test foo_bench ... bench: [..]")
+ .with_stdout_contains("test bench ... bench: [..]"));
}
#[test]
[COMPILING] syntax v0.0.1 ({dir})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]syntax-[..][EXE]", dir = p.url()))
- .with_stdout("
-running 1 test
-test bench ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test bench ... bench: [..]"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] --bench`
[RUNNING] `[..]target[/]release[/]deps[/]bench-[..][EXE] --bench`", dir = p.url()))
- .with_stdout("
-running 1 test
-test foo ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+ .with_stdout_contains_n("test foo ... bench: [..]", 2));
-
-running 1 test
-test foo ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
p.root().move_into_the_past();
assert_that(p.cargo("bench").arg("-v"),
execs().with_status(0)
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] --bench`
[RUNNING] `[..]target[/]release[/]deps[/]bench-[..][EXE] --bench`", dir = p.url()))
- .with_stdout("
-running 1 test
-test foo ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-
-running 1 test
-test foo ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains_n("test foo ... bench: [..]", 2));
}
#[test]
[COMPILING] foo v0.0.1 ({dir})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", dir = p.url()))
- .with_stdout("
-running 1 test
-test foo ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test foo ... bench: [..]"));
assert_that(p.cargo("bench"),
execs().with_status(0)
.with_stderr("[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
- .with_stdout("
-running 1 test
-test foo ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test foo ... bench: [..]"));
}
#[test]
[RUNNING] `{dir}[/]target[/]release[/]deps[/]testbench-[..][EXE] --bench`
[RUNNING] `{dir}[/]target[/]release[/]deps[/]testb1-[..][EXE] --bench`",
dir = p.root().display(), url = p.url()))
- .with_stdout("
-running 1 test
-test bench_bench1 ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-
-running 1 test
-test bench_bench2 ... bench: [..] 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-
-"));
+ .with_stdout_contains("test bench_bench1 ... bench: [..]")
+ .with_stdout_contains("test bench_bench2 ... bench: [..]"));
}
#[test]
[COMPILING] foo v0.1.0 ([..])
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
[RUNNING] target[/]debug[/]deps[/]b-[..][EXE]")
- .with_stdout("
-running 1 test
-test foo ... ok
-
-test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
-
-"));
+ .with_stdout_contains("test foo ... ok"));
}
#[test]
"));
}
+#[test]
+fn test_bench_no_fail_fast() {
+ if !is_nightly() { return }
+
+ let p = project("foo")
+ .file("Cargo.toml", &basic_bin_manifest("foo"))
+ .file("src/foo.rs", r#"
+ #![feature(test)]
+ extern crate test;
+ fn hello() -> &'static str {
+ "hello"
+ }
+
+ pub fn main() {
+ println!("{}", hello())
+ }
+
+ #[bench]
+ fn bench_hello(_b: &mut test::Bencher) {
+ assert_eq!(hello(), "hello")
+ }
+
+ #[bench]
+ fn bench_nope(_b: &mut test::Bencher) {
+ assert_eq!("nope", hello())
+ }"#);
+
+ assert_that(p.cargo_process("bench").arg("--no-fail-fast"),
+ execs().with_status(101)
+ .with_stderr_contains("\
+[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
+ .with_stdout_contains("running 2 tests")
+ .with_stderr_contains("\
+[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
+ .with_stdout_contains("test bench_hello [..]")
+ .with_stdout_contains("test bench_nope [..]"));
+}
+
#[test]
fn test_bench_multiple_packages() {
if !is_nightly() { return }
execs().with_status(0)
.with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]bbaz-[..][EXE]")
- .with_stdout_contains("
-running 1 test
-test bench_baz ... bench: 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-")
+ .with_stdout_contains("test bench_baz ... bench: [..]")
.with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]bbar-[..][EXE]")
- .with_stdout_contains("
-running 1 test
-test bench_bar ... bench: 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-"));
+ .with_stdout_contains("test bench_bar ... bench: [..]"));
}
#[test]
execs().with_status(0)
.with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]bar-[..][EXE]")
- .with_stdout_contains("
-running 1 test
-test bench_bar ... bench: 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-")
- .with_stderr_contains("\
+ .with_stdout_contains("test bench_bar ... bench: [..]")
+ .with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
- .with_stdout_contains("
-running 1 test
-test bench_foo ... bench: 0 ns/iter (+/- 0)
+ .with_stdout_contains("test bench_foo ... bench: [..]"));
+}
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-"));
+#[test]
+fn bench_all_exclude() {
+ if !is_nightly() { return }
+
+ let p = project("foo")
+ .file("Cargo.toml", r#"
+ [project]
+ name = "foo"
+ version = "0.1.0"
+
+ [workspace]
+ members = ["bar", "baz"]
+ "#)
+ .file("src/main.rs", r#"
+ fn main() {}
+ "#)
+ .file("bar/Cargo.toml", r#"
+ [project]
+ name = "bar"
+ version = "0.1.0"
+ "#)
+ .file("bar/src/lib.rs", r#"
+ #![feature(test)]
+
+ extern crate test;
+
+ #[bench]
+ pub fn bar(b: &mut test::Bencher) {
+ b.iter(|| {});
+ }
+ "#)
+ .file("baz/Cargo.toml", r#"
+ [project]
+ name = "baz"
+ version = "0.1.0"
+ "#)
+ .file("baz/src/lib.rs", r#"
+ #[test]
+ pub fn baz() {
+ break_the_build();
+ }
+ "#);
+
+ assert_that(p.cargo_process("bench")
+ .arg("--all")
+ .arg("--exclude")
+ .arg("baz"),
+ execs().with_status(0)
+ .with_stdout_contains("\
+running 1 test
+test bar ... bench: [..] ns/iter (+/- [..])"));
}
#[test]
execs().with_status(0)
.with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]bar-[..][EXE]")
- .with_stdout_contains("
-running 1 test
-test bench_bar ... bench: 0 ns/iter (+/- 0)
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-")
- .with_stderr_contains("\
+ .with_stdout_contains("test bench_bar ... bench: [..]")
+ .with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
- .with_stdout_contains("
-running 1 test
-test bench_foo ... bench: 0 ns/iter (+/- 0)
+ .with_stdout_contains("test bench_foo ... bench: [..]"));
+}
-test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
-"));
+// https://github.com/rust-lang/cargo/issues/4287
+#[test]
+fn legacy_bench_name() {
+ if !is_nightly() { return }
+
+ let p = project("foo")
+ .file("Cargo.toml", r#"
+ [project]
+ name = "foo"
+ version = "0.1.0"
+
+ [[bench]]
+ name = "bench"
+ "#)
+ .file("src/lib.rs", r#"
+ pub fn foo() {}
+ "#)
+ .file("src/bench.rs", r#"
+ #![feature(test)]
+ extern crate test;
+
+ use test::Bencher;
+
+ #[bench]
+ fn bench_foo(_: &mut Bencher) -> () { () }
+ "#);
+
+ assert_that(p.cargo_process("bench"), execs().with_status(0).with_stderr_contains("\
+[WARNING] path `[..]src[/]bench.rs` was erroneously implicitly accepted for benchmark `bench`,
+please set bench.path in Cargo.toml"));
}
#[test]
.file("foo/benches/foo.rs", r#"
#![feature(test)]
extern crate test;
-
use test::Bencher;
-
#[bench]
fn bench_foo(_: &mut Bencher) -> () { () }
"#)
.file("bar/benches/bar.rs", r#"
#![feature(test)]
extern crate test;
-
use test::Bencher;
-
#[bench]
fn bench_bar(_: &mut Bencher) -> () { () }
"#);
.with_stdout_contains("
running 1 test
test bench_bar ... bench: 0 ns/iter (+/- 0)
-
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
")
.with_stderr_contains("\
.with_stdout_contains("
running 1 test
test bench_foo ... bench: 0 ns/iter (+/- 0)
-
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
"));
}
-